# @Time : 2024-10-16 15:02
# @Author : Fioman 
# @Phone : 13149920693

"""
变量: 用于存储数据的一段内存空间的名称代号,可以存储不同类型的数据,如数字,字符串,列表,字典等
命名规则:
1) 包含字母(a-z A-Z) 数字(0-9) 和下划线
2) 不能以数字开头
3) 区分大小写,禁止使用特殊符号,比如 @ $ % & 等
4) 不能是Python的关键字
"""

# 有效的变量命名
variable = 1
my_variable = 2
var123 = 3
myName = "Fioman"
_priavteVal = "privateVal"
# 无效的变量命名
# 123variable(不能以数字开头)
# my varibale (中间不能有空格)
# my-variable(不能有分隔符-)
# class (不能是关键字)

'''
print 函数的原型
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
'''
# 从print的函数原型中,可以看出来,第一个参数是一个可变的参数,只要是非关键字形参都可以被*args解析出来
# 然后sep表示的是分割符,就是如果打印多个内容,用什么进行分隔,默认是空字符串,然后默认也是用换行符结尾
# 1. 常规用法
print("我是一个非常普通的打印,输出到控制台,并且会自动换行")

# 2. 打印多条内容,并且不指定分隔符号
print("我是一个分开的打印", "我分开了,但是我中间是用空格分开的")

# 3. 我想指定分隔符
print("我是一个分开的打印", "使用其他符号进行分隔", sep="*")

# 4. 我想要在行的末尾以end结尾
print("我不想以换行符结尾", "我想要以end结尾", sep="|", end="end")

# 5. 我不想输出到控制台,我想输出到文件流中,默认是GBK的格式
with open("层级介绍.txt", "w", encoding="utf-8") as f:
    print("我不想以换行符结尾", "我想要以end结尾", sep="|", end="end", file=f)

# 6. 打印的字符串格式化
#  格式化方式1: f-string
name = "Fioman"
age = 30
print(f"{name} is{age} years old.")

print("{} is {} years old.".format(name, age))

# 7. 直接打印列表或者是字典
myList = [1, 2, 3, 4, 5]
myDict = {
    "name": "Fioman",
    "age": 30,
}
# 巧用'\n' 分隔符打印多行
print(myList, myDict, sep='\n')

# 8. 打印多行文本,采用三重引号 ''' 或者是 """ 打印多行文本
print("""我是多行文本,
我可以显示多行内容,
并且使用print打印出来
""")

# 9. 一行中声明多个变量
firstName, lastName, age, isMarried = "Fioman", "Meng", 18, "否"

# 10. input() 获取用户输入,并且赋值给变量,注意input获取的是字符串
yourName = input("请输入: ")
print(f"输入的姓名为: {yourName}")
